// //一.输入输出
// //输入:prompt,会弹出一个输入框
// prompt("请输入你的名字");

// //弹出警示对话框, 输出结果
// alert("hello js");

// //输出:console.log
// //在控制台打印一个日志(供程序员查看)
// //向控制台输出日志
// console.log("这是一条日志");

/*重要概念: 日志
日志是程序员调试程序的重要手段
重要概念: .
console 是一个 js 中的 "对象"
. 表示取对象中的某个属性或者方法. 可以直观理解成 "的"
console.log 就可以理解成: 使用 "控制台"对象""的"log方法 */

// //二.变量的使用
// var name = 'zhangsan';
// var age = 20;

// console.log(typeof age);//读取变量内容,typeof查看变量的类型
// age = 30;//修改

// // 代码示例: 弹框提示用户输入信息, 再弹框显示.
// let name = prompt("请输入姓名");
// let age = prompt("请输入年龄");
// let score = prompt("请输入分数");
// alert("宁的姓名是: "+ name);

//三.理解动态类型
//JS的变量类型是随着程序运行过程中才确定的(运行到=语句才会确定类型)
//C, C++, Java, Go 等语言是静态类型语言. 一个变量在创建的时候类型就确定了, 不能在运行时发生
// 改变.

//四.基本数据类型
// JS 中内置的几种类型
// 1.number: 数字. 不区分整数和小数. 
// JS中不区分整数和浮点数,统一都使用"数字类型"来表示
// 特殊的数字值
// Infinity: 无穷大, 大于任何数字. 表示数字已经超过了 JS 能表示的范围. 
// -Infinity: 负无穷大, 小于任何数字. 表示数字已经超过了 JS 能表示的范围. 
// NaN: 表示当前的结果不是一个数字.

// var max = Number.MAX_VALUE;
// console.log(max);
// //得到Infinity
// console.log(max*2);
// //得到-Infinity
// console.log(-max*2);

// //求长度--单位为字符的数量
// var a = 'hehe';
// console.log(a.length);
// var b = '哈哈';
// console.log(b.length);

// 2.boolean: true 真, false 假. 

// 3.string: 字符串类型. 
//同Java的一样,可用+拼接

// // 4.undefined: 只有唯一的值 undefined. 表示未定义的值. 
// //如果一个变量没有被初始化,结果就是undfined,是这个类型
// var a;
// console.log(a);

// //undefined和字符串想加,结果进行拼接
// console.log(a+"10");

// //undefined和数字进行想加,结果为NaN
// console.log(a+10);


// // 4.null: 只有唯一的值 null. 表示空值. 
// var b = null;
// console.log(b+10);//10
// console.log(b+'10');//null10

/*let是 ES6引入的相对新的机制(ES6大概是201x年左右搞出来的)var这是最早就有(199x)
var里面有一些缺陷.后面统一使用let .
使用let之后,这个变量的作用域,生命周期啥的都和java 中的变量都类似.*/

//三.运算符
//==在比较的时候不考虑类型,会尽可能的进行类型转换这样的操作
//===在比较的时候会考虑比较类型.如果类型不同,就直接是false了.
// let a = 10;
// let b = '10';
// console.log(a == b);//true,弱类型尝试类型转换
// console.log(a === b);//false

//位运算符还是只能针对整数来运算

//if()里的条件0表示false,非0表示true
//弱类型的语言,true相当于1,false相当于0
// let a = true;
// let b = false;
// console.log(a+1);
// console.log(b+1);


// || JS中逻辑或和Java差别很大

//JS的或者运算 a||b,
//如果a为true,整个表达式的值就是a的值.
//如果b为false,整个表达式的值就是b的值.得到的结果不一定就是boolean类型的

/**
 * undefined表示的是一个非法的状态,特指没有被初始化
 * 
 * null是一个空值,也是表示一个非法的状态,用户手动设定的非法值
 * 
 * 按理来说,编程语言里面有一个概念能够表示"非法状态"就够了
 * 因此除了JS之外,大部分变成语言都是有null,但是没有undefined
 */

